home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / misc / sci / ephem_src_4_28.lha / constel.c < prev    next >
C/C++ Source or Header  |  1992-04-17  |  20KB  |  553 lines

  1. #include <math.h>
  2. #include "astro.h"
  3. #include "screen.h"
  4. #include "circum.h"
  5.  
  6. /* print the constellation object p is in now as a prompt message.
  7.  */
  8. constellation_msg (p, np)
  9. int p;
  10. Now *np;
  11. {
  12.     char buf[NC];
  13.     char *name;
  14.     Sky s;
  15.  
  16.     (void) body_cir (p, 0.0, np, &s);
  17.     confnd (s.s_ra, s.s_dec, epoch == EOD ? mjd : epoch, &name);
  18.     sprintf (buf, "In %s", name);
  19.     f_msg (buf);
  20. }
  21.  
  22. /*
  23.   METHOD TO DETERMINE THE CONSTELLATION IN WHICH A POSITION IS LOCATED
  24.  
  25. C version by Craig Counterman and Elwood Downey,
  26. adapted from fortran version:
  27. exerpt from accompanying doc file:
  28.  
  29.         Recently, Mr. Barry N. Rappaport of New  Mexico State University
  30.   transcribed  the constellation  boundaries as  fixed  by the IAU  into
  31.   machine-readable form.  These have  been  transcribed  by Dr. Nancy G.
  32.   Roman to make it possible  to determine by  computer the constellation
  33.   in which a position is located.
  34.  
  35. NSSDC catalog description:
  36.  6042   AN     Catalog of Constellation Boundary Data (Delporte, E. 1930, 
  37.                Cambridge Univ. Press)
  38.                Comment(s): includes constellation identification software 
  39.                (ADC 1987; see Roman, N.G. 1987, Publ. Astron. Soc. Pacific 
  40.                99, 695); 23 description, 118 software, 358 data records. 
  41.                3 files: 23x80, 118x80, 358x29 
  42.  
  43. full documentation file:
  44.  
  45.    METHOD TO DETERMINE THE CONSTELLATION IN WHICH A POSITION IS LOCATED
  46.  
  47.      Recently, Mr. Barry N. Rappaport of New Mexico State University trans-
  48. cribed the constellation boundaries as fixed by the IAU into machine-readable
  49. form.  These have been transcribed by Dr. Nancy G. Roman to make it possible to
  50. determine by computer the constellation in which a position is located.
  51.      Two files follow.  The first is a program, in FORTRAN77, for determining
  52. the constellation using the data in the succeeding file.  Comments describe
  53. the format in which the positions must be entered.  The main program is
  54. followed by a precession subroutine.
  55.      The final file is a list of constellation boundaries in the form Lower
  56. Right Ascension (F8.4), Upper Right Ascension (F8.4), Lower Declination (F9.4),
  57. three letter abbreviation for the Constellation (1X,A3).  The file contains
  58. 358, 29-byte records.
  59.     The following is an example of the output of the program:
  60.  RA =  9.0000 DEC =  65.0000  IS IN CONSTELLATION UMa
  61.  RA = 23.5000 DEC = -20.0000  IS IN CONSTELLATION Aqr
  62.  RA =  5.1200 DEC =   9.1200  IS IN CONSTELLATION Ori
  63.  RA =  9.4555 DEC = -19.9000  IS IN CONSTELLATION Hya
  64.  RA = 12.8888 DEC =  22.0000  IS IN CONSTELLATION Com
  65.  RA = 15.6687 DEC = -12.1234  IS IN CONSTELLATION Lib
  66.  RA = 19.0000 DEC = -40.0000  IS IN CONSTELLATION CrA
  67.  RA =  6.2222 DEC = -81.1234  IS IN CONSTELLATION Men
  68.  END OF INPUT POSITIONS AFTER: RA =   6.2222   DEC = -81.1234
  69.  THE EQUINOX FOR THESE POSITIONS IS 1950.0
  70. */
  71.  
  72. static char And[] = "And: Andromeda";
  73. static char Ant[] = "Ant: Antlia";
  74. static char Aps[] = "Aps: Apus";
  75. static char Aql[] = "Aql: Aquila";
  76. static char Aqr[] = "Aqr: Aquarius";
  77. static char Ara[] = "Ara: Ara";
  78. static char Ari[] = "Ari: Aries";
  79. static char Aur[] = "Aur: Auriga";
  80. static char Boo[] = "Boo: Bootes";
  81. static char CMa[] = "CMa: Canis Major";
  82. static char CMi[] = "CMi: Canis Minor";
  83. static char CVn[] = "CVn: Canes Venatici";
  84. static char Cae[] = "Cae: Caelum";
  85. static char Cam[] = "Cam: Camelopardalis";
  86. static char Cap[] = "Cap: Capricornus";
  87. static char Car[] = "Car: Carina";
  88. static char Cas[] = "Cas: Cassiopeia";
  89. static char Cen[] = "Cen: Centaurus";
  90. static char Cep[] = "Cep: Cepheus";
  91. static char Cet[] = "Cet: Cetus";
  92. static char Cha[] = "Cha: Chamaeleon";
  93. static char Cir[] = "Cir: Circinus";
  94. static char Cnc[] = "Cnc: Cancer";
  95. static char Col[] = "Col: Columba";
  96. static char Com[] = "Com: Coma Berenices";
  97. static char CrA[] = "CrA: Corona Australis";
  98. static char CrB[] = "CrB: Corona Borealis";
  99. static char Crt[] = "Crt: Crater";
  100. static char Cru[] = "Cru: Crux";
  101. static char Crv[] = "Crv: Corvus";
  102. static char Cyg[] = "Cyg: Cygnus";
  103. static char Del[] = "Del: Delphinus";
  104. static char Dor[] = "Dor: Dorado";
  105. static char Dra[] = "Dra: Draco";
  106. static char Equ[] = "Equ: Equuleus";
  107. static char Eri[] = "Eri: Eridanus";
  108. static char For[] = "For: Fornax";
  109. static char Gem[] = "Gem: Gemini";
  110. static char Gru[] = "Gru: Grus";
  111. static char Her[] = "Her: Hercules";
  112. static char Hor[] = "Hor: Horologium";
  113. static char Hya[] = "Hya: Hydra";
  114. static char Hyi[] = "Hyi: Hydrus";
  115. static char Ind[] = "Ind: Indus";
  116. static char LMi[] = "LMi: Leo Minor";
  117. static char Lac[] = "Lac: Lacerta";
  118. static char Leo[] = "Leo: Leo";
  119. static char Lep[] = "Lep: Lepus";
  120. static char Lib[] = "Lib: Libra";
  121. static char Lup[] = "Lup: Lupus";
  122. static char Lyn[] = "Lyn: Lynx";
  123. static char Lyr[] = "Lyr: Lyra";
  124. static char Men[] = "Men: Mensa";
  125. static char Mic[] = "Mic: Microscopium";
  126. static char Mon[] = "Mon: Monoceros";
  127. static char Mus[] = "Mus: Musca";
  128. static char Nor[] = "Nor: Norma";
  129. static char Oct[] = "Oct: Octans";
  130. static char Oph[] = "Oph: Ophiuchus";
  131. static char Ori[] = "Ori: Orion";
  132. static char Pav[] = "Pav: Pavo";
  133. static char Peg[] = "Peg: Pegasus";
  134. static char Per[] = "Per: Perseus";
  135. static char Phe[] = "Phe: Phoenix";
  136. static char Pic[] = "Pic: Pictor";
  137. static char PsA[] = "PsA: Piscis Austrinus";
  138. static char Psc[] = "Psc: Pisces";
  139. static char Pup[] = "Pup: Puppis";
  140. static char Pyx[] = "Pyx: Pyxis";
  141. static char Ret[] = "Ret: Reticulum";
  142. static char Scl[] = "Scl: Sculptor";
  143. static char Sco[] = "Sco: Scorpius";
  144. static char Sct[] = "Sct: Scutum";
  145. static char Ser[] = "Ser: Serpens";
  146. static char Sex[] = "Sex: Sextans";
  147. static char Sge[] = "Sge: Sagitta";
  148. static char Sgr[] = "Sgr: Sagittarius";
  149. static char Tau[] = "Tau: Taurus";
  150. static char Tel[] = "Tel: Telescopium";
  151. static char TrA[] = "TrA: Triangulum Australe";
  152. static char Tri[] = "Tri: Triangulum";
  153. static char Tuc[] = "Tuc: Tucana";
  154. static char UMa[] = "UMa: Ursa Major";
  155. static char UMi[] = "UMi: Ursa Minor";
  156. static char Vel[] = "Vel: Vela";
  157. static char Vir[] = "Vir: Virgo";
  158. static char Vol[] = "Vol: Volans";
  159. static char Vul[] = "Vul: Vulpecula";
  160.  
  161. struct cdata {
  162.     double l_ra, u_ra, l_dec;
  163.     char *cons;
  164. } con_data[] = {
  165.     {0.0000, 24.0000, 88.0000, UMi},
  166.     {8.0000, 14.5000, 86.5000, UMi},
  167.     {21.0000, 23.0000, 86.1667, UMi},
  168.     {18.0000, 21.0000, 86.0000, UMi},
  169.     {0.0000, 8.0000, 85.0000, Cep},
  170.     {9.1667, 10.6667, 82.0000, Cam},
  171.     {0.0000, 5.0000, 80.0000, Cep},
  172.     {10.6667, 14.5000, 80.0000, Cam},
  173.     {17.5000, 18.0000, 80.0000, UMi},
  174.     {20.1667, 21.0000, 80.0000, Dra},
  175.     {0.0000, 3.5083, 77.0000, Cep},
  176.     {11.5000, 13.5833, 77.0000, Cam},
  177.     {16.5333, 17.5000, 75.0000, UMi},
  178.     {20.1667, 20.6667, 75.0000, Cep},
  179.     {7.9667, 9.1667, 73.5000, Cam},
  180.     {9.1667, 11.3333, 73.5000, Dra},
  181.     {13.0000, 16.5333, 70.0000, UMi},
  182.     {3.1000, 3.4167, 68.0000, Cas},
  183.     {20.4167, 20.6667, 67.0000, Dra},
  184.     {11.3333, 12.0000, 66.5000, Dra},
  185.     {0.0000, 0.3333, 66.0000, Cep},
  186.     {14.0000, 15.6667, 66.0000, UMi},
  187.     {23.5833, 24.0000, 66.0000, Cep},
  188.     {12.0000, 13.5000, 64.0000, Dra},
  189.     {13.5000, 14.4167, 63.0000, Dra},
  190.     {23.1667, 23.5833, 63.0000, Cep},
  191.     {6.1000, 7.0000, 62.0000, Cam},
  192.     {20.0000, 20.4167, 61.5000, Dra},
  193.     {20.5367, 20.6000, 60.9167, Cep},
  194.     {7.0000, 7.9667, 60.0000, Cam},
  195.     {7.9667, 8.4167, 60.0000, UMa},
  196.     {19.7667, 20.0000, 59.5000, Dra},
  197.     {20.0000, 20.5367, 59.5000, Cep},
  198.     {22.8667, 23.1667, 59.0833, Cep},
  199.     {0.0000, 2.4333, 58.5000, Cas},
  200.     {19.4167, 19.7667, 58.0000, Dra},
  201.     {1.7000, 1.9083, 57.5000, Cas},
  202.     {2.4333, 3.1000, 57.0000, Cas},
  203.     {3.1000, 3.1667, 57.0000, Cam},
  204.     {22.3167, 22.8667, 56.2500, Cep},
  205.     {5.0000, 6.1000, 56.0000, Cam},
  206.     {14.0333, 14.4167, 55.5000, UMa},
  207.     {14.4167, 19.4167, 55.5000, Dra},
  208.     {3.1667, 3.3333, 55.0000, Cam},
  209.     {22.1333, 22.3167, 55.0000, Cep},
  210.     {20.6000, 21.9667, 54.8333, Cep},
  211.     {0.0000, 1.7000, 54.0000, Cas},
  212.     {6.1000, 6.5000, 54.0000, Lyn},
  213.     {12.0833, 13.5000, 53.0000, UMa},
  214.     {15.2500, 15.7500, 53.0000, Dra},
  215.     {21.9667, 22.1333, 52.7500, Cep},
  216.     {3.3333, 5.0000, 52.5000, Cam},
  217.     {22.8667, 23.3333, 52.5000, Cas},
  218.     {15.7500, 17.0000, 51.5000, Dra},
  219.     {2.0417, 2.5167, 50.5000, Per},
  220.     {17.0000, 18.2333, 50.5000, Dra},
  221.     {0.0000, 1.3667, 50.0000, Cas},
  222.     {1.3667, 1.6667, 50.0000, Per},
  223.     {6.5000, 6.8000, 50.0000, Lyn},
  224.     {23.3333, 24.0000, 50.0000, Cas},
  225.     {13.5000, 14.0333, 48.5000, UMa},
  226.     {0.0000, 1.1167, 48.0000, Cas},
  227.     {23.5833, 24.0000, 48.0000, Cas},
  228.     {18.1750, 18.2333, 47.5000, Her},
  229.     {18.2333, 19.0833, 47.5000, Dra},
  230.     {19.0833, 19.1667, 47.5000, Cyg},
  231.     {1.6667, 2.0417, 47.0000, Per},
  232.     {8.4167, 9.1667, 47.0000, UMa},
  233.     {0.1667, 0.8667, 46.0000, Cas},
  234.     {12.0000, 12.0833, 45.0000, UMa},
  235.     {6.8000, 7.3667, 44.5000, Lyn},
  236.     {21.9083, 21.9667, 44.0000, Cyg},
  237.     {21.8750, 21.9083, 43.7500, Cyg},
  238.     {19.1667, 19.4000, 43.5000, Cyg},
  239.     {9.1667, 10.1667, 42.0000, UMa},
  240.     {10.1667, 10.7833, 40.0000, UMa},
  241.     {15.4333, 15.7500, 40.0000, Boo},
  242.     {15.7500, 16.3333, 40.0000, Her},
  243.     {9.2500, 9.5833, 39.7500, Lyn},
  244.     {0.0000, 2.5167, 36.7500, And},
  245.     {2.5167, 2.5667, 36.7500, Per},
  246.     {19.3583, 19.4000, 36.5000, Lyr},
  247.     {4.5000, 4.6917, 36.0000, Per},
  248.     {21.7333, 21.8750, 36.0000, Cyg},
  249.     {21.8750, 22.0000, 36.0000, Lac},
  250.     {6.5333, 7.3667, 35.5000, Aur},
  251.     {7.3667, 7.7500, 35.5000, Lyn},
  252.     {0.0000, 2.0000, 35.0000, And},
  253.     {22.0000, 22.8167, 35.0000, Lac},
  254.     {22.8167, 22.8667, 34.5000, Lac},
  255.     {22.8667, 23.5000, 34.5000, And},
  256.     {2.5667, 2.7167, 34.0000, Per},
  257.     {10.7833, 11.0000, 34.0000, UMa},
  258.     {12.0000, 12.3333, 34.0000, CVn},
  259.     {7.7500, 9.2500, 33.5000, Lyn},
  260.     {9.2500, 9.8833, 33.5000, LMi},
  261.     {0.7167, 1.4083, 33.0000, And},
  262.     {15.1833, 15.4333, 33.0000, Boo},
  263.     {23.5000, 23.7500, 32.0833, And},
  264.     {12.3333, 13.2500, 32.0000, CVn},
  265.     {23.7500, 24.0000, 31.3333, And},
  266.     {13.9583, 14.0333, 30.7500, CVn},
  267.     {2.4167, 2.7167, 30.6667, Tri},
  268.     {2.7167, 4.5000, 30.6667, Per},
  269.     {4.5000, 4.7500, 30.0000, Aur},
  270.     {18.1750, 19.3583, 30.0000, Lyr},
  271.     {11.0000, 12.0000, 29.0000, UMa},
  272.     {19.6667, 20.9167, 29.0000, Cyg},
  273.     {4.7500, 5.8833, 28.5000, Aur},
  274.     {9.8833, 10.5000, 28.5000, LMi},
  275.     {13.2500, 13.9583, 28.5000, CVn},
  276.     {0.0000, 0.0667, 28.0000, And},
  277.     {1.4083, 1.6667, 28.0000, Tri},
  278.     {5.8833, 6.5333, 28.0000, Aur},
  279.     {7.8833, 8.0000, 28.0000, Gem},
  280.     {20.9167, 21.7333, 28.0000, Cyg},
  281.     {19.2583, 19.6667, 27.5000, Cyg},
  282.     {1.9167, 2.4167, 27.2500, Tri},
  283.     {16.1667, 16.3333, 27.0000, CrB},
  284.     {15.0833, 15.1833, 26.0000, Boo},
  285.     {15.1833, 16.1667, 26.0000, CrB},
  286.     {18.3667, 18.8667, 26.0000, Lyr},
  287.     {10.7500, 11.0000, 25.5000, LMi},
  288.     {18.8667, 19.2583, 25.5000, Lyr},
  289.     {1.6667, 1.9167, 25.0000, Tri},
  290.     {0.7167, 0.8500, 23.7500, Psc},
  291.     {10.5000, 10.7500, 23.5000, LMi},
  292.     {21.2500, 21.4167, 23.5000, Vul},
  293.     {5.7000, 5.8833, 22.8333, Tau},
  294.     {0.0667, 0.1417, 22.0000, And},
  295.     {15.9167, 16.0333, 22.0000, Ser},
  296.     {5.8833, 6.2167, 21.5000, Gem},
  297.     {19.8333, 20.2500, 21.2500, Vul},
  298.     {18.8667, 19.2500, 21.0833, Vul},
  299.     {0.1417, 0.8500, 21.0000, And},
  300.     {20.2500, 20.5667, 20.5000, Vul},
  301.     {7.8083, 7.8833, 20.0000, Gem},
  302.     {20.5667, 21.2500, 19.5000, Vul},
  303.     {19.2500, 19.8333, 19.1667, Vul},
  304.     {3.2833, 3.3667, 19.0000, Ari},
  305.     {18.8667, 19.0000, 18.5000, Sge},
  306.     {5.7000, 5.7667, 18.0000, Ori},
  307.     {6.2167, 6.3083, 17.5000, Gem},
  308.     {19.0000, 19.8333, 16.1667, Sge},
  309.     {4.9667, 5.3333, 16.0000, Tau},
  310.     {15.9167, 16.0833, 16.0000, Her},
  311.     {19.8333, 20.2500, 15.7500, Sge},
  312.     {4.6167, 4.9667, 15.5000, Tau},
  313.     {5.3333, 5.6000, 15.5000, Tau},
  314.     {12.8333, 13.5000, 15.0000, Com},
  315.     {17.2500, 18.2500, 14.3333, Her},
  316.     {11.8667, 12.8333, 14.0000, Com},
  317.     {7.5000, 7.8083, 13.5000, Gem},
  318.     {16.7500, 17.2500, 12.8333, Her},
  319.     {0.0000, 0.1417, 12.5000, Peg},
  320.     {5.6000, 5.7667, 12.5000, Tau},
  321.     {7.0000, 7.5000, 12.5000, Gem},
  322.     {21.1167, 21.3333, 12.5000, Peg},
  323.     {6.3083, 6.9333, 12.0000, Gem},
  324.     {18.2500, 18.8667, 12.0000, Her},
  325.     {20.8750, 21.0500, 11.8333, Del},
  326.     {21.0500, 21.1167, 11.8333, Peg},
  327.     {11.5167, 11.8667, 11.0000, Leo},
  328.     {6.2417, 6.3083, 10.0000, Ori},
  329.     {6.9333, 7.0000, 10.0000, Gem},
  330.     {7.8083, 7.9250, 10.0000, Cnc},
  331.     {23.8333, 24.0000, 10.0000, Peg},
  332.     {1.6667, 3.2833,  9.9167, Ari},
  333.     {20.1417, 20.3000,  8.5000, Del},
  334.     {13.5000, 15.0833,  8.0000, Boo},
  335.     {22.7500, 23.8333,  7.5000, Peg},
  336.     {7.9250, 9.2500,  7.0000, Cnc},
  337.     {9.2500, 10.7500,  7.0000, Leo},
  338.     {18.2500, 18.6622,  6.2500, Oph},
  339.     {18.6622, 18.8667,  6.2500, Aql},
  340.     {20.8333, 20.8750,  6.0000, Del},
  341.     {7.0000, 7.0167,  5.5000, CMi},
  342.     {18.2500, 18.4250,  4.5000, Ser},
  343.     {16.0833, 16.7500,  4.0000, Her},
  344.     {18.2500, 18.4250,  3.0000, Oph},
  345.     {21.4667, 21.6667,  2.7500, Peg},
  346.     {0.0000, 2.0000,  2.0000, Psc},
  347.     {18.5833, 18.8667,  2.0000, Ser},
  348.     {20.3000, 20.8333,  2.0000, Del},
  349.     {20.8333, 21.3333,  2.0000, Equ},
  350.     {21.3333, 21.4667,  2.0000, Peg},
  351.     {22.0000, 22.7500,  2.0000, Peg},
  352.     {21.6667, 22.0000,  1.7500, Peg},
  353.     {7.0167, 7.2000,  1.5000, CMi},
  354.     {3.5833, 4.6167,  0.0000, Tau},
  355.     {4.6167, 4.6667,  0.0000, Ori},
  356.     {7.2000, 8.0833,  0.0000, CMi},
  357.     {14.6667, 15.0833,  0.0000, Vir},
  358.     {17.8333, 18.2500,  0.0000, Oph},
  359.     {2.6500, 3.2833, -1.7500, Cet},
  360.     {3.2833, 3.5833, -1.7500, Tau},
  361.     {15.0833, 16.2667, -3.2500, Ser},
  362.     {4.6667, 5.0833, -4.0000, Ori},
  363.     {5.8333, 6.2417, -4.0000, Ori},
  364.     {17.8333, 17.9667, -4.0000, Ser},
  365.     {18.2500, 18.5833, -4.0000, Ser},
  366.     {18.5833, 18.8667, -4.0000, Aql},
  367.     {22.7500, 23.8333, -4.0000, Psc},
  368.     {10.7500, 11.5167, -6.0000, Leo},
  369.     {11.5167, 11.8333, -6.0000, Vir},
  370.     {0.0000, 0.3333, -7.0000, Psc},
  371.     {23.8333, 24.0000, -7.0000, Psc},
  372.     {14.2500, 14.6667, -8.0000, Vir},
  373.     {15.9167, 16.2667, -8.0000, Oph},
  374.     {20.0000, 20.5333, -9.0000, Aql},
  375.     {21.3333, 21.8667, -9.0000, Aqr},
  376.     {17.1667, 17.9667, -10.0000, Oph},
  377.     {5.8333, 8.0833, -11.0000, Mon},
  378.     {4.9167, 5.0833, -11.0000, Eri},
  379.     {5.0833, 5.8333, -11.0000, Ori},
  380.     {8.0833, 8.3667, -11.0000, Hya},
  381.     {9.5833, 10.7500, -11.0000, Sex},
  382.     {11.8333, 12.8333, -11.0000, Vir},
  383.     {17.5833, 17.6667, -11.6667, Oph},
  384.     {18.8667, 20.0000, -12.0333, Aql},
  385.     {4.8333, 4.9167, -14.5000, Eri},
  386.     {20.5333, 21.3333, -15.0000, Aqr},
  387.     {17.1667, 18.2500, -16.0000, Ser},
  388.     {18.2500, 18.8667, -16.0000, Sct},
  389.     {8.3667, 8.5833, -17.0000, Hya},
  390.     {16.2667, 16.3750, -18.2500, Oph},
  391.     {8.5833, 9.0833, -19.0000, Hya},
  392.     {10.7500, 10.8333, -19.0000, Crt},
  393.     {16.2667, 16.3750, -19.2500, Oph},
  394.     {15.6667, 15.9167, -20.0000, Lib},
  395.     {12.5833, 12.8333, -22.0000, Crv},
  396.     {12.8333, 14.2500, -22.0000, Vir},
  397.     {9.0833, 9.7500, -24.0000, Hya},
  398.     {1.6667, 2.6500, -24.3833, Cet},
  399.     {2.6500, 3.7500, -24.3833, Eri},
  400.     {10.8333, 11.8333, -24.5000, Crt},
  401.     {11.8333, 12.5833, -24.5000, Crv},
  402.     {14.2500, 14.9167, -24.5000, Lib},
  403.     {16.2667, 16.7500, -24.5833, Oph},
  404.     {0.0000, 1.6667, -25.5000, Cet},
  405.     {21.3333, 21.8667, -25.5000, Cap},
  406.     {21.8667, 23.8333, -25.5000, Aqr},
  407.     {23.8333, 24.0000, -25.5000, Cet},
  408.     {9.7500, 10.2500, -26.5000, Hya},
  409.     {4.7000, 4.8333, -27.2500, Eri},
  410.     {4.8333, 6.1167, -27.2500, Lep},
  411.     {20.0000, 21.3333, -28.0000, Cap},
  412.     {10.2500, 10.5833, -29.1667, Hya},
  413.     {12.5833, 14.9167, -29.5000, Hya},
  414.     {14.9167, 15.6667, -29.5000, Lib},
  415.     {15.6667, 16.0000, -29.5000, Sco},
  416.     {4.5833, 4.7000, -30.0000, Eri},
  417.     {16.7500, 17.6000, -30.0000, Oph},
  418.     {17.6000, 17.8333, -30.0000, Sgr},
  419.     {10.5833, 10.8333, -31.1667, Hya},
  420.     {6.1167, 7.3667, -33.0000, CMa},
  421.     {12.2500, 12.5833, -33.0000, Hya},
  422.     {10.8333, 12.2500, -35.0000, Hya},
  423.     {3.5000, 3.7500, -36.0000, For},
  424.     {8.3667, 9.3667, -36.7500, Pyx},
  425.     {4.2667, 4.5833, -37.0000, Eri},
  426.     {17.8333, 19.1667, -37.0000, Sgr},
  427.     {21.3333, 23.0000, -37.0000, PsA},
  428.     {23.0000, 23.3333, -37.0000, Scl},
  429.     {3.0000, 3.5000, -39.5833, For},
  430.     {9.3667, 11.0000, -39.7500, Ant},
  431.     {0.0000, 1.6667, -40.0000, Scl},
  432.     {1.6667, 3.0000, -40.0000, For},
  433.     {3.8667, 4.2667, -40.0000, Eri},
  434.     {23.3333, 24.0000, -40.0000, Scl},
  435.     {14.1667, 14.9167, -42.0000, Cen},
  436.     {15.6667, 16.0000, -42.0000, Lup},
  437.     {16.0000, 16.4208, -42.0000, Sco},
  438.     {4.8333, 5.0000, -43.0000, Cae},
  439.     {5.0000, 6.5833, -43.0000, Col},
  440.     {8.0000, 8.3667, -43.0000, Pup},
  441.     {3.4167, 3.8667, -44.0000, Eri},
  442.     {16.4208, 17.8333, -45.5000, Sco},
  443.     {17.8333, 19.1667, -45.5000, CrA},
  444.     {19.1667, 20.3333, -45.5000, Sgr},
  445.     {20.3333, 21.3333, -45.5000, Mic},
  446.     {3.0000, 3.4167, -46.0000, Eri},
  447.     {4.5000, 4.8333, -46.5000, Cae},
  448.     {15.3333, 15.6667, -48.0000, Lup},
  449.     {0.0000, 2.3333, -48.1667, Phe},
  450.     {2.6667, 3.0000, -49.0000, Eri},
  451.     {4.0833, 4.2667, -49.0000, Hor},
  452.     {4.2667, 4.5000, -49.0000, Cae},
  453.     {21.3333, 22.0000, -50.0000, Gru},
  454.     {6.0000, 8.0000, -50.7500, Pup},
  455.     {8.0000, 8.1667, -50.7500, Vel},
  456.     {2.4167, 2.6667, -51.0000, Eri},
  457.     {3.8333, 4.0833, -51.0000, Hor},
  458.     {0.0000, 1.8333, -51.5000, Phe},
  459.     {6.0000, 6.1667, -52.5000, Car},
  460.     {8.1667, 8.4500, -53.0000, Vel},
  461.     {3.5000, 3.8333, -53.1667, Hor},
  462.     {3.8333, 4.0000, -53.1667, Dor},
  463.     {0.0000, 1.5833, -53.5000, Phe},
  464.     {2.1667, 2.4167, -54.0000, Eri},
  465.     {4.5000, 5.0000, -54.0000, Pic},
  466.     {15.0500, 15.3333, -54.0000, Lup},
  467.     {8.4500, 8.8333, -54.5000, Vel},
  468.     {6.1667, 6.5000, -55.0000, Car},
  469.     {11.8333, 12.8333, -55.0000, Cen},
  470.     {14.1667, 15.0500, -55.0000, Lup},
  471.     {15.0500, 15.3333, -55.0000, Nor},
  472.     {4.0000, 4.3333, -56.5000, Dor},
  473.     {8.8333, 11.0000, -56.5000, Vel},
  474.     {11.0000, 11.2500, -56.5000, Cen},
  475.     {17.5000, 18.0000, -57.0000, Ara},
  476.     {18.0000, 20.3333, -57.0000, Tel},
  477.     {22.0000, 23.3333, -57.0000, Gru},
  478.     {3.2000, 3.5000, -57.5000, Hor},
  479.     {5.0000, 5.5000, -57.5000, Pic},
  480.     {6.5000, 6.8333, -58.0000, Car},
  481.     {0.0000, 1.3333, -58.5000, Phe},
  482.     {1.3333, 2.1667, -58.5000, Eri},
  483.     {23.3333, 24.0000, -58.5000, Phe},
  484.     {4.3333, 4.5833, -59.0000, Dor},
  485.     {15.3333, 16.4208, -60.0000, Nor},
  486.     {20.3333, 21.3333, -60.0000, Ind},
  487.     {5.5000, 6.0000, -61.0000, Pic},
  488.     {15.1667, 15.3333, -61.0000, Cir},
  489.     {16.4208, 16.5833, -61.0000, Ara},
  490.     {14.9167, 15.1667, -63.5833, Cir},
  491.     {16.5833, 16.7500, -63.5833, Ara},
  492.     {6.0000, 6.8333, -64.0000, Pic},
  493.     {6.8333, 9.0333, -64.0000, Car},
  494.     {11.2500, 11.8333, -64.0000, Cen},
  495.     {11.8333, 12.8333, -64.0000, Cru},
  496.     {12.8333, 14.5333, -64.0000, Cen},
  497.     {13.5000, 13.6667, -65.0000, Cir},
  498.     {16.7500, 16.8333, -65.0000, Ara},
  499.     {2.1667, 3.2000, -67.5000, Hor},
  500.     {3.2000, 4.5833, -67.5000, Ret},
  501.     {14.7500, 14.9167, -67.5000, Cir},
  502.     {16.8333, 17.5000, -67.5000, Ara},
  503.     {17.5000, 18.0000, -67.5000, Pav},
  504.     {22.0000, 23.3333, -67.5000, Tuc},
  505.     {4.5833, 6.5833, -70.0000, Dor},
  506.     {13.6667, 14.7500, -70.0000, Cir},
  507.     {14.7500, 17.0000, -70.0000, TrA},
  508.     {0.0000, 1.3333, -75.0000, Tuc},
  509.     {3.5000, 4.5833, -75.0000, Hyi},
  510.     {6.5833, 9.0333, -75.0000, Vol},
  511.     {9.0333, 11.2500, -75.0000, Car},
  512.     {11.2500, 13.6667, -75.0000, Mus},
  513.     {18.0000, 21.3333, -75.0000, Pav},
  514.     {21.3333, 23.3333, -75.0000, Ind},
  515.     {23.3333, 24.0000, -75.0000, Tuc},
  516.     {0.7500, 1.3333, -76.0000, Tuc},
  517.     {0.0000, 3.5000, -82.5000, Hyi},
  518.     {7.6667, 13.6667, -82.5000, Cha},
  519.     {13.6667, 18.0000, -82.5000, Aps},
  520.     {3.5000, 7.6667, -85.0000, Men},
  521.     {0.0000, 24.0000, -90.0000, Oct},
  522.     {0.0000, 24.0000, -90.0000, ""}
  523. };
  524.  
  525. /* given ra and dec (in rads) precessed to epoch e (an mjd)
  526.  * point *name to a string naming the constellation at that location.
  527.  */
  528. static
  529. confnd(r, d, e, name)
  530. double r, d, e;
  531. char **name;
  532. {
  533.     double ra1875, de1875, mjd1875;
  534.     int i;
  535.  
  536.     cal_mjd (1, 1.0, 1875, &mjd1875);
  537.     precess (e, mjd1875, &r, &d);
  538.         
  539.     /* find constellation such that the declination entered is higher than
  540.      * the lower boundary of the constellation when the upper and lower
  541.      * right ascensions for the constellation bound the entered right
  542.      * ascension
  543.      */
  544.     i = 0;
  545.     ra1875 = radhr (r);
  546.     de1875 = raddeg (d);
  547.     while ((con_data[i].l_dec > de1875 || con_data[i].u_ra <= ra1875
  548.              || con_data[i].l_ra > ra1875) && con_data[i].cons[0])
  549.          i++;
  550.  
  551.     *name = con_data[i].cons[0] ? con_data[i].cons : "<No constellation?!>";
  552. }
  553.